//
//  HMStatusViewModel.swift
//  新浪微博
//
//  Created by 饶鹏伟 on 16/4/11.
//  Copyright © 2016年 饶鹏伟. All rights reserved.
//

import UIKit

class HMStatusViewModel: NSObject {
    //cell模型属性
    var status: HMStatus?
    //模型中的 mbrank不能够直接用于视图显示 需要进行额外的处理
    var mbImage: UIImage?
    //认证类型的图片
    var verifiedImage: UIImage?
    //头像图片的url  定义一个储存性属性 在初始化的时候 在init方法中会被赋值 以后再调用 就会在内存中获取 消耗内存 但是不消耗cpu 如果定义一个计算型属性 每次执行都会执行 消耗cpu
    var headImageURL: NSURL?
    
    //转发的文字
    var repostTitle: String?
    //评论的文字
    var commentTitle: String?
    //赞的文字
    var zanTitle: String?
    
    
    //微博的来源 
    var source: String?
    
    //微博时间
   // var time: String?
    //只读属性(计算型属性)
    var time: String?{
        
        return NSDate.sinaDate(status?.created_at ?? "")?.fullDescription()
    }
    
    //初始化构造方法
    init(status: HMStatus) {
        
        super.init()
        //给属性赋值
        self.status=status
        //给headImageURL赋值
        headImageURL=NSURL(string: status.user?.profile_image_url ?? "")
       //直接计算
        //用户等级
        dealMbType()
        //用户的认证类型
        dealverified()
        
        //微博的来源
        dealsource()
        
        //微博时间
        //dealDate()
        
        //底部工具条的显示结果
        repostTitle=dealToolBarText(status.reposts_count, defaultTitle: "转发")
        commentTitle=dealToolBarText(status.comments_count, defaultTitle: "评论")
        zanTitle=dealToolBarText(status.attitudes_count, defaultTitle: "赞")
    }
}


//扩展 处理微博首页数据
extension HMStatusViewModel{
    
    
    //处理微博来源
    //处理微博来源 从status 获取的值  <a href=\"http://app.weibo.com/t/feed/5yvsgq\" rel=\"nofollow\">TCL乐玩2C</a>
    
    private func dealsource(){
        
        //开始和结束的标志
        let startFlag="\">"
        let endFlag="</"
        //模型的来源的值
        let str = status?.source ?? ""
        //找到两个标志在字符串中的位置 并且以两个位置找到起始和结束的位置 确定范围 然后取出来
        if let startRange = str.rangeOfString(startFlag), endRange = str.rangeOfString(endFlag) {
            let range = startRange.endIndex..<endRange.startIndex
            source = str.substringWithRange(range)
        }
        
        
    }
    
    
//    //处理微博时间
//    private func dealDate(){
//        
//        // 模型中返回的值 Thu Apr 14 11:00:10 +0800 2016
//        //NSDateFormatter 非常消耗性能的 一般使用这个对象的时候 建议使用静态的或者全局变量
//        
//        //指定日期格式化对象的格式
//        sharedDF.dateFormat = "EEE MMM dd HH:mm:ss zzz yyyy"
//        
//        //指定区域 不指定 在模拟器上 可以正常运行  但是 在真机会崩溃
//        sharedDF.locale = NSLocale(localeIdentifier: "en")
//        //将对应的字符串转换为对应格式的 NSDate
//        let sinaDate = sharedDF.dateFromString(status?.created_at ?? "")
//        
//        sharedDF.dateFormat = "yyyy-MM-dd HH:mm:ss"
//        
//        //将NSDate 转化为字符串 并赋值
//        time = sharedDF.stringFromDate(sinaDate!)
//    
//        
//    }
    
    
    
    //用户等级
    private func dealMbType(){
        
        let mbType = status?.user?.mbrank ?? 0
        
        if mbType > 0 && mbType<7{
            
            mbImage=UIImage(named: "common_icon_membership_level\(mbType)")
        }
    }
    
    
    //认证类型
    private func dealverified(){
        
        let verified=status?.user?.verified ?? -1
        switch verified{
            
        case 1 :
            
            verifiedImage=UIImage(named: "avatar_vip")
            
        case 2,3,5 :
            
            verifiedImage=UIImage(named: "avatar_enterprise_vip")
            
        case 220 :
            
            verifiedImage = UIImage(named: "avatar_grassroot")
            
        default :
            
            
            verifiedImage = nil
            
        }

        
    }
    
    
    //转发 评论 赞数据的处理 如果有数值 就显示值 如果没有就显示默认的文字\
    //根据数量计算文字 如果大于0 就显示数量 如果 <= 0 就显示原有的文字
    private func dealToolBarText(count: Int, defaultTitle: String) -> String{
        
        if count <= 0{
            
            return defaultTitle
        }
        
        if count > 1000 {
            
            return "\(Double(count/1000)/10)万"
        }
        
        return "\(count)"
    }
    
    
}

